let my_code = ''
Page({
  data: {
    countDownVisible: false,
    mobile: '',
    code: '',
    redirectUrl: ''
  },

  onLoad(options) {
    console.log('登录页面的页面栈：', options);
    this.data.redirectUrl = options.redirectUrl
    // this.setData()
  },

  async submitForm() {
    if (!this.validateMobile() || !this.validateCode()) return

    // vue  api文件夹
    const res = await wx.$http.post('/login', {
      mobile: this.data.mobile,
      code: this.data.code
    })
    if (res.code !== 10000) return wx.$utils.toast('登录请求失败')
    // 下面代码是登录成功以后做的事情，将token保存起来
    getApp().setToken(res.data.token, res.data.refreshToken)


    // 登录成功以后，先保存了token，然后再跳转回之前的页面
    // bug: 在登录成功以后，跳转的连接redirectUrl， 有可能有值，有可能为空
    // redirectUrl为空的时候，跳转不会生效，控制台也不会报错
    // wx.redirectTo({
    //   url: this.data.redirectUrl,
    // })
    // if (this.data.redirectUrl) {
    //   wx.redirectTo({
    //     url: this.data.redirectUrl,
    //   })
    // } else {
    //   wx.redirectTo({
    //     url: '/page/index/index',
    //   })
    // }

    // 三元表达式   xxx ? xxx : xxxx
    // this.data.redirectUrl ? 
    // wx.redirectTo({
    //   url: this.data.redirectUrl,
    // }) : wx.redirectTo({
    //   url: '/page/index/index',
    // })

    // 逻辑中断  逻辑与 和 逻辑或
    wx.redirectTo({
      url: this.data.redirectUrl || '/page/index/index',
    })
  },

  // getCode这个函数的功能就是单独的发请求的， 我们的手机号校验的功能
  // 比较大，应该单独抽离封装成一个函数，去下面函数调用一下就可以了
  async getCode() {
    // 发起获取验证码的请求 ---- 先校验
    if (!this.validateMobile()) return
    // 下面写法和上面一样， 上面是if 的简写形式， return是退出函数的作用
    // if (!this.validateMobile()) {
    //   return
    // }

    const res = await wx.$http.get('/code', {
      mobile: this.data.mobile
    })
    if (res.code !== 10000) return wx.$utils.toast("获取验证码请求失败")

    wx.$utils.toast("验证码已经发送了，请查看手机")
    this.setData({
      countDownVisible: true
    })

    my_code = res.data.code

    // if(this.validateMobile()) {
    //   console.log(111);
    // } else {
    //   xxxx
    // }
  },

  copyCode() {
    // 向剪贴板 放置内容。 类似与我们平常的 ctrl+c 将内容放到剪切板里面
    wx.setClipboardData({
      data: my_code
    })
  },

  // 校验手机号
  validateMobile() {
    const reg = /^1[3|5|6|7|8|9]\d{9}$/
    const valide = reg.test(this.data.mobile.trim())
    if (!valide) wx.$utils.toast('手机号校验失败')

    return valide
  },

  // 校验验证码
  validateCode() {
    // aaaaAAAAA11111!@#￥%……&*
    const reg = /^\d{6}$/
    const valide = reg.test(this.data.code.trim())
    if (!valide) wx.$utils.toast('验证码校验失败')

    return valide
  },

  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
})